#设置PREFIX为Ctrl-a
set -g prefix C-a
#解除Ctrl-b与PREFIX的对应关系
unbind C-b
unbind Space
unbind C-o

#copy-mode将快捷键设置为vi模式
setw -g mode-keys vi
#将r键设置为加载配置文件，并显示"reloaded!"信息
bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind c-r source-file ~/dotfiles/tmux.conf \; display "Reloaded default key!"

#设置终端颜色为256色
set -g default-terminal "screen-256color"
#开启status-bar uft-8支持
set -gq status-utf8 on

#设置pan-border
set -g pane-border-style fg=green,bg=black
set -g pane-active-border-style fg=black,bg=yellow,blink

#设置消息前景色(tmux display-message)
set -g message-style fg=white,bg=black,bright

#设置status-bar颜色
set -g status-style fg=white,bg=black

#普通窗口和活动窗口的颜色，让非活动窗口灰一点，容易识别当前窗口
set -g window-style 'fg=colour246,bg=colour236'
set -g window-active-style 'fg=colour250,bg=colour232'
#如果是在ssh登录状态，让非活动窗口蓝一点，这样当tmux嵌套时，容易识别不同主机
if-shell 'test -n "$SSH_CLIENT"' "set -g window-style 'fg=colour247,bg=#000090'"
if-shell 'test -n "$SSH_CLIENT"' "set -g window-active-style 'fg=colour250,bg=#500040'"

#设置窗口列表颜色
setw -g window-status-style fg=cyan,bg=default
setw -g window-status-current-style fg=white,bg=red


#设置status bar格式
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-right "#[fg=cyan]%d %b %R"
set -g status-interval 60
set -g status-justify centre

#设置pane的title。（注：在嵌套tmux里不会显示）
setw -g pane-border-status top
setw -g pane-border-format "#{pane_index} #{pane_title} #{pane_current_command}"


#设置状态栏右侧文字，需要安装sysstate插件
wg_is_keys_off="#[fg=white,bg=red]#([ $(tmux show-option -qv key-table) = 'off' ] && echo 'OFF')#[default]"
wg_user_host="#[fg=red]#(whoami)#[default]@#H"
set -g status-right "$wg_is_keys_off #{sysstat_cpu} | #{sysstat_mem} | $wg_user_host" 
set -g status-right-length 150

#默认启用鼠标
set -g mouse on
#按esc时秒退出，不等待
set -s escape-time 0

#### 适应于各种终端环境的特殊变量
set-environment -g CHERE_INVOKING 1
set -g update-environment "SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION SSH_AUTH_SOCK KUBECONFIG"


bind h select-pane -L 
bind j select-pane -D 
bind k select-pane -U 
bind l select-pane -R
bind - splitw -c "#{pane_current_path}"
bind | splitw -h -c "#{pane_current_path}"
bind c neww -c "#{pane_current_path}"
bind m set -g mouse on\; display "mouse:ON"
bind M set -g mouse off\; display "mouse:OFF"
bind C-n send-keys "C-c"\; run-shell 'sleep 0.1'\; send-keys "up"\; send-keys "enter"\; 
bind C-k send-keys "clear"\; send-keys "enter"\; clear-history
bind C-j command-prompt -p "join pane from:"  "join-pane -s '%%'"
bind C-p command-prompt -p "rename pane:"  "select-pane -T '%%'"
bind F10 select-window -t :=10
bind F1 select-window -t :=11
bind F2 select-window -t :=12
bind M-r move-window -r
bind -r  Up resize-pane -U
bind -r  Down resize-pane -D
bind -r  Left resize-pane -L
bind -r Right resize-pane -R
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

#在mac上需要terminal里设置option当作meta键
bind -n C-M-h swap-window -t -1
bind -n C-M-l swap-window -t +1
bind -n C-M-j movew -r #重新排序窗口

#通用复制功能,yank
bind C-y run-shell 'tmux show-buffer | copy_to_sysclip.sh'

#在mac上必须走reattach-to-user-namespace封装，否则进程环境不对
if-shell "uname | grep -q Darwin" "set-option -g default-command 'reattach-to-user-namespace -l bash'"


#tpm插件管理，需要先安装tpm
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'samoshkin/tmux-plugin-sysstat'
set -g @plugin 'tmux-plugins/tmux-yank'
run -b '~/.tmux/plugins/tpm/tpm'

set -g @shell_mode 'vi' #兼容shell的vi模式
#设置tmux保存的进程
set -g @resurrect-processes '"~yarn" "~/bin/jtx"'



#按F12切换到内嵌tmux，在macos里需要系统设置中取消F12占用
#1. prefix为None，不再拦截快捷键
#2. key-table为off，下面再绑定off下的F12，使之能退出内嵌模式
#3. 改变statusbar颜色，以便知道已进入内嵌模式
#4. 如果处于特殊模式，退出
unbind -T root F12
bind -T root F12 \
  set prefix None \;\
  set key-table off \;\
  set status-style bg=colour235 \;\
  if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
  refresh-client -S

#在off表里绑定F12，恢复之前的设置，以退出该模式
bind -T off F12 \
  set -u prefix \;\
  set -u key-table \;\
  set -u status-style \;\
  refresh-client -S
  

#测试代码
#if-shell ' test -n "$SSH_CLIENT" ' "set -g status-right abc"
